API

L'API de Vignette vous permet de publier du contenu via d'autres applications.

Où trouver la clé d'API d'un site ?

Allez sursitesitepuis Notifications et Posts automatiques.

Où trouver l'ID d'un site

Ceux sont les caractères après https://vignette.eco.

Exemple pour ce site (en gras) : https://vignette.eco/ytmZ-2leaQ

A quoi correspond PAGE_FULL_NAME dans l'exemple ci-dessous ?

C'est le nom complet de la page.

Exemple ici (en gras) : https://vignette.eco/ytmZ-2leaQ/avance>api

Ajouter une vignette (javascript)

const headers = new Headers();
headers.append("Authorization", "Bearer <API_KEY>");
headers.append("Content-Type", "application/javascript");

const body = {
  site: "<SITE_ID>",
  page: "<PAGE_FULL_NAME>",
  vignette: {
    title: "vignette de test, via API",
    text: "At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga.",
    pub: true, // publish right away
  }
}

var requestOptions = {
  method: 'POST',
  headers,
  body: JSON.stringify(body),
};

let VIGNETTE_ID
const response = await fetch("https://vignette.eco/api/vignette/publish", requestOptions)
if (response.status === 200) {
  VIGNETTE_ID = (await response.json()).id // l'id de la vignette créée, utile pour ajouter des médias ensuite
} else {
  console.log("error: ", await response.text())
}

Ajouter un média (image, vidéo....) à une vignette (javascript)

import { readFileSync } from 'fs' // from a nodejs environment
import { lookup } from 'mime-types' // from a nodejs environment

const headers = new Headers();
headers.append("Authorization", "Bearer <API_KEY>");

const mediaPath = "/path/to/file.webp"
const mimeType = lookup(mediaPath) // 'image/webp'
const formdata = new FormData();
formdata.append("file", new Blob([readFileSync(mediaPath)], { type: mimeType }))

var requestOptions = {
  method: 'POST',
  headers: headers,
  body: formdata,
};

const response = await fetch(`https://vignette.eco/api/drive/files?site=<SITE_ID>&vignette=<VIGNETTE_ID>`, requestOptions)
if (response.status === 204) {
  console.log("SUCCESSS!")
} else {
  console.log("error: ", await response.text())
}